import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
# get gradient:
# ref: https://docs.opencv.org/3.4/da/d22/tutorial_py_canny.html
# Canny Edge detection:
# - Noise Reduction!!!
# - Get gradient and direction
# - Non-maximum Suppression & Hysteresis Thresholding
def canny_edge(path):
img = cv.imread(path,0)
edges = cv.Canny(img,100,200)
im_rgb = cv.cvtColor(cv.imread(path), cv.COLOR_BGR2RGB)
plt.figure(figsize=(15,5))
plt.subplot(131),plt.imshow(im_rgb)
plt.title('Original RGB Gray Image of '+ path), plt.xticks([]), plt.yticks([])
plt.subplot(132),plt.imshow(img,cmap = 'gray')
plt.title('Original Gray Image'), plt.xticks([]), plt.yticks([])
plt.subplot(133),plt.imshow(edges,cmap = 'gray')
plt.title('Edge Image'), plt.xticks([]), plt.yticks([])
plt.show()
return edges
import numpy as np
import matplotlib.pyplot as plt
from skimage import data, img_as_float
from skimage.metrics import structural_similarity as ssim
from skimage.metrics import mean_squared_error as mse
import cv2 as cv
from skimage.metrics import structural_similarity as ssim
def mse_(path1, path2):
# path_= 'input.jpg'
image1 = cv.imread(path1)
image1 = cv.cvtColor(image1,cv.COLOR_BGR2GRAY) # 将图像转换为灰度图
# path_= 'output_0.jpg'
image2 = cv.imread(path2)
image2 = cv.cvtColor(image2,cv.COLOR_BGR2GRAY) # 将图像转换为灰度图
sim = mse(image1, image2)
# plt.subplot(121),plt.imshow(image1,cmap = 'gray')
# plt.title('Original Image: '+path1), plt.xticks([]), plt.yticks([])
# plt.subplot(122),plt.imshow(image2,cmap = 'gray')
# plt.title('Output Image: '+path2), plt.xticks([]), plt.yticks([])
# plt.show()
print("MSE:", sim)
def ssim_(path1, path2):
# path_= 'input.jpg'
image1 = cv.imread(path1)
image1 = cv.cvtColor(image1,cv.COLOR_BGR2GRAY) # 将图像转换为灰度图
# path_= 'output_0.jpg'
image2 = cv.imread(path2)
image2 = cv.cvtColor(image2,cv.COLOR_BGR2GRAY) # 将图像转换为灰度图
sim = ssim(image1, image2)
plt.subplot(121),plt.imshow(image1,cmap = 'gray')
plt.title('Original Image: '+path1), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(image2,cmap = 'gray')
plt.title('Output Image: '+path2), plt.xticks([]), plt.yticks([])
plt.show()
print("SSIM:", sim)
def ssim_img(image1, image2):
sim = ssim(image1, image2)
plt.subplot(121),plt.imshow(image1,cmap = 'gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(image2,cmap = 'gray')
plt.title('Output Image'), plt.xticks([]), plt.yticks([])
plt.show()
print("edge-SSIM:", sim)
# Not suitable to use
def mse_img(image1, image2):
sim = mse(image1, image2)
# plt.subplot(121),plt.imshow(image1,cmap = 'gray')
# plt.title('Original Image'), plt.xticks([]), plt.yticks([])
# plt.subplot(122),plt.imshow(image2,cmap = 'gray')
# plt.title('Output Image'), plt.xticks([]), plt.yticks([])
# plt.show()
print("edge-MSE:", sim)
print("**** Test golden style ****")
edg1 = canny_edge('input.jpg')
edg2 = canny_edge('ours/output_0.jpg') # ours
edg3 = canny_edge('ours_opt/output_0.jpg') # ours
edg4 = canny_edge('dsmap/output_0.jpg') #dsmap
print()
print("****************************************************************")
print("input vs ours")
ssim_img(edg1, edg2)
ssim_('input.jpg', 'ours/output_0.jpg')
print()
print("****************************************************************")
print("input vs ours-opt")
ssim_img(edg1, edg3)
ssim_('input.jpg', 'ours_opt/output_0.jpg')
print()
print("****************************************************************")
print("input vs dsmap")
ssim_img(edg1, edg4)
ssim_('input.jpg', 'dsmap/output_0.jpg')
**** Test golden style ****
**************************************************************** input vs ours
edge-SSIM: 0.6818926587510011
SSIM: 0.7303196323115332 **************************************************************** input vs ours-opt
edge-SSIM: 0.8143807591283646
SSIM: 0.8125945560375658 **************************************************************** input vs dsmap
edge-SSIM: 0.5450863178996909
SSIM: 0.6166640107472611
print("**** Test challenging Golden style ****")
edg1 = canny_edge('input_14.jpg')
edg2 = canny_edge('ours/14_output_1.jpg') # ours
edg3 = canny_edge('ours_opt/14_output_1.jpg') # ours
edg4 = canny_edge('dsmap/14_output_1.jpg') #dsmap
print()
print("********************************")
print("input_14 vs ours")
ssim_img(edg1, edg2)
ssim_('input_14.jpg', 'ours/14_output_1.jpg')
mse_img(edg1, edg2)
mse_('input_14.jpg', 'ours/14_output_1.jpg')
print()
print("********************************")
print("input_14 vs ours-opt")
ssim_img(edg1, edg3)
ssim_('input_14.jpg', 'ours_opt/14_output_1.jpg')
mse_img(edg1, edg3)
mse_('input_14.jpg', 'ours_opt/14_output_1.jpg')
print()
print("********************************")
print("input_14 vs dsmap")
ssim_img(edg1, edg4)
ssim_('input_14.jpg', 'dsmap/14_output_1.jpg')
mse_img(edg1, edg4)
mse_('input_14.jpg', 'dsmap/14_output_1.jpg')
**** Test challenging Golden style ****
******************************** input_14 vs ours
edge-SSIM: 0.4016619089813951
SSIM: 0.286677638305511 edge-MSE: 9728.878784179688 MSE: 4112.635965983073 ******************************** input_14 vs ours-opt
edge-SSIM: 0.5210624393889896
SSIM: 0.3722094332305752 edge-MSE: 7403.155517578125 MSE: 3982.994354248047 ******************************** input_14 vs dsmap
edge-SSIM: 0.2520496469064007
SSIM: 0.32493827244967105 edge-MSE: 13572.010803222656 MSE: 2183.449696858724
print("**** Test challenging Blue style ****")
edg1 = canny_edge('input_18.jpg')
edg2 = canny_edge('ours/18_output_23.jpg') # ours
edg3 = canny_edge('ours_opt/18_output_23.jpg') # ours
edg4 = canny_edge('dsmap/18_output_23.jpg') #dsmap
print()
print("********************************")
print("input_18 vs ours")
ssim_img(edg1, edg2)
ssim_('input_18.jpg', 'ours/18_output_23.jpg')
print()
print("********************************")
print("input_18 vs ours-opt")
ssim_img(edg1, edg3)
ssim_('input_18.jpg', 'ours_opt/18_output_23.jpg')
print()
print("********************************")
print("input_18 vs dsmap")
ssim_img(edg1, edg4)
ssim_('input_18.jpg', 'dsmap/18_output_23.jpg')
**** Test challenging Blue style ****
******************************** input_18 vs ours
edge-SSIM: 0.528687019524189
SSIM: 0.4891096649007594 ******************************** input_18 vs ours-opt
edge-SSIM: 0.7974035516861685
SSIM: 0.5982476690002758 ******************************** input_18 vs dsmap
edge-SSIM: 0.5061561793117823
SSIM: 0.31818000385790357
print("**** Test challenging Blue style ****")
edg1 = canny_edge('input_18.jpg')
edg2 = canny_edge('ours/18_output_43.jpg') # ours
edg3 = canny_edge('ours_opt/18_output_43.jpg') # ours
edg4 = canny_edge('dsmap/18_output_43.jpg') #dsmap
print()
print("********************************")
print("input_18 vs ours")
ssim_img(edg1, edg2)
ssim_('input_18.jpg', 'ours/18_output_43.jpg')
print()
print("********************************")
print("input_18 vs ours-opt")
ssim_img(edg1, edg3)
ssim_('input_18.jpg', 'ours_opt/18_output_43.jpg')
print()
print("********************************")
print("input_18 vs dsmap")
ssim_img(edg1, edg4)
ssim_('input_18.jpg', 'dsmap/18_output_43.jpg')
**** Test challenging Blue style ****
******************************** input_18 vs ours
edge-SSIM: 0.6262334184002538
SSIM: 0.6842636665703894 ******************************** input_18 vs ours-opt
edge-SSIM: 0.8324479548521894
SSIM: 0.8104880787836298 ******************************** input_18 vs dsmap
edge-SSIM: 0.5482005566701473
SSIM: 0.5672060858520116
print("**** Test challenging dark style ****")
edg1 = canny_edge('input_19.jpg')
edg2 = canny_edge('ours/19_output_11.jpg') # ours
edg3 = canny_edge('ours_opt/19_output_11.jpg') # ours
edg4 = canny_edge('dsmap/19_output_11.jpg') #dsmap
print()
print("********************************")
print("input_19 vs ours")
ssim_img(edg1, edg2)
ssim_('input_19.jpg', 'ours/19_output_11.jpg')
print()
print("********************************")
print("input_19 vs ours-opt")
ssim_img(edg1, edg3)
ssim_('input_19.jpg', 'ours_opt/19_output_11.jpg')
print()
print("********************************")
print("input_19 vs dsmap")
ssim_img(edg1, edg4)
ssim_('input_19.jpg', 'dsmap/19_output_11.jpg')
**** Test challenging dark style ****
******************************** input_19 vs ours
edge-SSIM: 0.6996379733003116
SSIM: 0.34191323173088795 ******************************** input_19 vs ours-opt
edge-SSIM: 0.7887027484415844
SSIM: 0.3847590554614435 ******************************** input_19 vs dsmap
edge-SSIM: 0.5233863218112146
SSIM: -0.023493186186203
print("**** Test dark style ****")
edg1 = canny_edge('input_19.jpg')
edg2 = canny_edge('ours/19_output_19.jpg') # ours
edg3 = canny_edge('ours_opt/19_output_19.jpg') # ours
edg4 = canny_edge('dsmap/19_output_19.jpg') #dsmap
print()
print("********************************")
print("input_19 vs ours")
ssim_img(edg1, edg2)
ssim_('input_19.jpg', 'ours/19_output_19.jpg')
print()
print("********************************")
print("input_19 vs ours-opt")
ssim_img(edg1, edg3)
ssim_('input_19.jpg', 'ours_opt/19_output_19.jpg')
print()
print("********************************")
print("input_19 vs dsmap")
ssim_img(edg1, edg4)
ssim_('input_19.jpg', 'dsmap/19_output_19.jpg')
**** Test dark style ****
******************************** input_19 vs ours
edge-SSIM: 0.6471893278224553
SSIM: 0.3249150816919668 ******************************** input_19 vs ours-opt
edge-SSIM: 0.7811387411015429
SSIM: 0.4034845769371973 ******************************** input_19 vs dsmap
edge-SSIM: 0.5177731508212082
SSIM: 0.07412442401100493